<?php
/**
 * @author
 * @version 
 */
require_once 'Zend/Controller/Action.php';
class Admin_ProductController extends Thaind_Controller_Action
{
	var $_arrParam;
	public function init()
    {
//    	Truyền các tham số nhận được ra view
    	$this->_arrParam = $this->_request->getParams();
    	if (!isset($this->_arrParam['page']) || !$this->_arrParam['page']) {
    		$this->_arrParam['page'] = 1;
    	}
    	if (!isset($this->_arrParam['line_per_page']) || !$this->_arrParam['line_per_page']) {
    		$this->_arrParam['line_per_page'] = 10;
    	}
    	if (!isset($this->_arrParam['os']) || !$this->_arrParam['os']) {
    		$this->_arrParam['os'] = 1;
    	}
    	$this->view->arrParam = $this->_arrParam;
    }

    public function preDispatch(){
		$template_path = TEMPLATE_PATH . "/admin/default/";
		$this->loadTemplate($template_path,'template.ini','template');
    	$auth = Zend_Auth::getInstance();
    	$identity = $auth->getIdentity();
    	if (!$auth->hasIdentity()) {
    		$this->_forward('login','index','admin');//,$this->_arrParam);
    	}
		$this->_arrParam["logging_user_id"] =  $identity->id;		
    }
    /**
     * The default action - show product list page
     */
    public function indexAction ()
    {
    	
//    	Khai báo biến

    	$db = Zend_Db_Table::getDefaultAdapter();
    	$mysql = $db->select()
    				->from(array("p"	=> "product"),array('id','name',"developer",'icon','download','update','status'))
    				->join(array("c"	=> "category"), "c.id = p.category_id",array("category"	=> "name"))
    				->where("p.os = ?",$this->_arrParam['os'])    				
    				->where("p.status = ?",1)    				
    				->order("p.id DESC");
		$auth = Zend_Auth::getInstance();
		$identity = $auth->getIdentity();
		if(!$identity->admin){
			$mysql->where("p.user_id = ?",$this->_arrParam['logging_user_id']);			
		}
    	$this->setPagination($mysql, $this->_arrParam);
    }

    public function addAction(){
    	$auth = Zend_Auth::getInstance();
    	$identity = $auth->getIdentity();
    	
    	if (!$identity->admin && !in_array(1,explode("|",$identity->permission))){
    		$this->_redirect("/admin/product");
    	}
//    	Load js và css sử dụng trong action

    	$this->view->headScript()->appendFile("/js/ckeditor/ckeditor.js",'text/javascript');
    	$this->view->headScript()->appendFile("/js/upload.js");
    	$this->view->headLink()->appendStylesheet('/css/upload.css','screen');
    	
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_ProductForm');
    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	Zend_Loader::loadClass('Admin_Models_CategoryModel');
    	
//    	Khai báo biến

    	/*
    	 * Adapter kết nối tới bảng category
    	 */
    	
    	$category_model = new Admin_Models_CategoryModel();
    	
    	/*
    	 * Danh sách category
    	 */
    	
    	$category_list = $category_model->getCategoryList();
    	
    	$product_category_modified_list = array();
    	foreach ($category_list as $value) {
    		$product_category_modified_list[$value['id']] = $value['name'];
    	}
    	
    	/**
    	 * Adapter ket noi toi bang product_model
    	 */
    	
    	$model = new Admin_Models_ProductModel();
    	
    	/**
    	 * Form add hoặc edit sản phẩm
    	 */
    	
    	$form = new Admin_Forms_ProductForm(array('submit'	=> 'Thêm',
    												'cancel_link'	=> '/admin/product',
    												'category_list'	=> $product_category_modified_list,
    	));
    	
//    	Nếu action là post thì thực hiện thêm product
        
    	if ($this->_request->isPost()){
    		
//    		Kiểm tra dữ liệu nhập vào đã thỏa hết các điều kiện chưa

    		if ($form->isValid($this->_arrParam)){
    			try {
					$data = $form->getValues();
					$data['download_link'] = Zend_Json::encode(explode("|",$data['download_link']));
					$data['ingame_image'] = Zend_Json::encode(explode("|",$data['ingame_image']));
					$data['os'] = ($this->_arrParam['os'])?$this->_arrParam['os']:1;
					$data['user_id'] = $this->_arrParam['logging_user_id'];
					$model->insert($data);
					$this->_redirect("/admin/product");
    			} catch (Exception $e) {
    				echo $e;
    			}
    		}
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    	$this->view->product_category_list = $category_list;
    }
    public function editAction(){
    	
    	$auth = Zend_Auth::getInstance();
    	$identity = $auth->getIdentity();
    	
    	if (!$identity->admin && !in_array(2,explode("|",$identity->permission))){
    		$this->_redirect("/admin/product");
    	}
//    	Load js và css sử dụng trong action

    	$this->view->headScript()->appendFile("/js/ckeditor/ckeditor.js",'text/javascript');
    	$this->view->headScript()->appendFile("/js/upload.js");
    	$this->view->headLink()->appendStylesheet('/css/upload.css','screen');
    	
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_ProductForm');
    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	Zend_Loader::loadClass('Admin_Models_CategoryModel');
    	
//    	Khai báo biến

    /*
    	 * Adapter kết nối tới bảng category
    	 */
    	
    	$category_model = new Admin_Models_CategoryModel();
    	
    	/*
    	 * Danh sách category
    	 */
    	
    	$category_list = $category_model->getCategoryList();
    	
    	$product_category_modified_list = array();
    	foreach ($category_list as $value) {
    		$product_category_modified_list[$value['id']] = $value['name'];
    	}
    	
    	$model = new Admin_Models_ProductModel();
    	
    	/**
    	 * Form add hoặc edit sản phẩm
    	 */
    	
    	$form = new Admin_Forms_ProductForm(array('submit'	=> 'Sửa',
    												'cancel_link'	=> '/admin/product',
    												'category_list'	=> $product_category_modified_list,
    	));
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	
//    	Nếu action là post thì thực hiện sửa product
        if (!$this->_arrParam['id']){
    		$this->_redirect('/admin/product');
    	}
    	if ($this->_request->isPost()){
    		
//    		Kiểm tra dữ liệu nhập vào đã thỏa hết các điều kiện chưa

    		if ($form->isValid($this->_arrParam)){
    			try {
    				
//    				Update dữ liệu
					$data = $form->getValues();
					$data['download_link'] = Zend_Json::encode(explode("|",$data['download_link']));
					$data['ingame_image'] = Zend_Json::encode(explode("|",$data['ingame_image']));
//					unset($data['description_input']);
    				$model->update($data,$where);
    				$this->_redirect('/admin/product');
    			} catch (Exception $e) {
    				echo $e;
    			}
    		}
    	}else{
	    	$product_info = $model->fetchRow($where);
	    	$product_info = $product_info->toArray();
			$auth = Zend_Auth::getInstance();
			$identity = $auth->getIdentity();
			if(!$identity->admin && $product_info["user_id"] != $this->_arrParam['logging_user_id']){
				$this->_redirect('/admin/product');
			}
	    	$product_info['download_link'] = implode("|",Zend_Json::decode($product_info['download_link']));
	    	$product_info['ingame_image'] = implode("|",Zend_Json::decode($product_info['ingame_image']));
	    	$form->setDefaults($product_info);
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    	$this->view->product_category_list = $category_list;
    	$this->render('add');
    }
    public function deleteAction(){
    	$auth = Zend_Auth::getInstance();
    	$identity = $auth->getIdentity();
    	
    	if (!$identity->addmin && !in_array(2,explode("|",$identity->permission))){
    		$this->_redirect("/admin/product");
    	}
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	
//		Tắt view

		$this->_helper->viewRenderer->setNoRender();
//    	Xóa record

		try {
//    		$model->delete($where);
    		$model->update(array("status"	=> 0),$where);
    		$this->_redirect('/admin/product');
    	} catch (Exception $e) {
    		echo $e;
    	}
    }
    public function downloadManagerAction(){
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	$product_info = $model->fetchRow($where);
    	
//		Truyền biến ra view

    	if ($product_info){
    		$this->view->file_download_list = Zend_Json::decode($product_info['download_link']);
    	}else{
    		$this->_redirect("/admin/product");
    	}
    }
    
    public function addDownloadLinkAction(){
    
//    	Load js và css sử dụng trong action

    	$this->view->headScript()->appendFile("/js/upload.js");
    	$this->view->headLink()->appendStylesheet('/css/upload.css','screen');
    	
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_ProductDownloadForm');
    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
    	
    	/**
    	 * Adapter ket noi toi bang product_model
    	 */
    	
    	/**
    	 * Form add hoặc edit sản phẩm
    	 */
    	
    	$form = new Admin_Forms_ProductDownloadForm(array('submit'	=> 'Thêm',
    												'cancel_link'	=> '/admin/product/download-manager/id/' . $this->_arrParam['id'],
    	));
    	
//    	Nếu action là post thì thực hiện thêm link
        
    	if ($this->_request->isPost()){
    		
//    		Kiểm tra dữ liệu nhập vào đã thỏa hết các điều kiện chưa

    		if ($form->isValid($this->_arrParam)){
    			try {
					$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    				$product_info = $model->fetchRow($where);
    				
    				$download_link_list = Zend_Json::decode($product_info['download_link']);
    				$download_link_list[] =$form->getValues();
					$model->update(array("download_link"	=> Zend_Json::encode($download_link_list)), $where);
					$this->_redirect('/admin/product/download-manager/id/' . $this->_arrParam['id']);
    			} catch (Exception $e) {
    				echo $e;
    			}
    		}
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    }
    public function editDownloadLinkAction(){
    
//    	Load js và css sử dụng trong action

    	$this->view->headScript()->appendFile("/js/upload.js");
    	$this->view->headLink()->appendStylesheet('/css/upload.css','screen');
    	
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_ProductDownloadForm');
    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
    	
    	/**
    	 * Adapter ket noi toi bang product_model
    	 */
    	
    	/**
    	 * Form add hoặc edit sản phẩm
    	 */
    	
    	$form = new Admin_Forms_ProductDownloadForm(array('submit'	=> 'Sửa',
    												'cancel_link'	=> '/admin/product/download-manager/id/' . $this->_arrParam['id'],
    	));
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	$product_info = $model->fetchRow($where);
    	$download_link_list = Zend_Json::decode($product_info['download_link']);
    	
//    	Nếu action là post thì thực hiện thêm link
        
    	if ($this->_request->isPost()){
    		
//    		Kiểm tra dữ liệu nhập vào đã thỏa hết các điều kiện chưa

    		if ($form->isValid($this->_arrParam)){
    			try {
    				
    				$download_link_list[$this->_arrParam["position"]] = $form->getValues();
					$model->update(array("download_link"	=> Zend_Json::encode($download_link_list)), $where);
					$this->_redirect('/admin/product/download-manager/id/' . $this->_arrParam['id']);
    			} catch (Exception $e) {
    				echo $e;
    			}
    		}
    	}else{
    		$form->setDefaults($download_link_list[$this->_arrParam["position"]]);
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    	$this->render("add-download-link");
    }
    public function deleteDownloadLinkAction(){
    
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
    	
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	$product_info = $model->fetchRow($where);
    	$download_link_list = Zend_Json::decode($product_info['download_link']);
    	
//    	Nếu action là post thì thực hiện thêm link
        
		try {
			unset($download_link_list[$this->_arrParam["position"]]);
			$model->update(array("download_link"	=> Zend_Json::encode($download_link_list)), $where);
			$this->_redirect('/admin/product/download-manager/id/' . $this->_arrParam['id']);
		} catch (Exception $e) {
			echo $e;
		}
//    	Truyền biến ra view

    }
    public function ingameImageManagerAction(){
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	$product_info = $model->fetchRow($where);
    	
//		Truyền biến ra view

    	if ($product_info){
    		$this->view->ingame_image_list = Zend_Json::decode($product_info['ingame_image']);
    	}else{
    		$this->_redirect("/admin/product");
    	}
    }
    
    public function addIngameImageAction(){
    
//    	Load js và css sử dụng trong action

    	$this->view->headScript()->appendFile("/js/upload.js");
    	$this->view->headLink()->appendStylesheet('/css/upload.css','screen');
    	
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_ProductIngameImageForm');
    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
    	
    	/**
    	 * Adapter ket noi toi bang product_model
    	 */
    	
    	/**
    	 * Form add hoặc edit sản phẩm
    	 */
    	
    	$form = new Admin_Forms_ProductIngameImageForm(array('submit'	=> 'Thêm',
    												'cancel_link'	=> '/admin/product/ingame-image-manager/id/' . $this->_arrParam['id'],
    	));
    	
//    	Nếu action là post thì thực hiện thêm link
        
    	if ($this->_request->isPost()){
    		
//    		Kiểm tra dữ liệu nhập vào đã thỏa hết các điều kiện chưa

    		if ($form->isValid($this->_arrParam)){
    			try {
					$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    				$product_info = $model->fetchRow($where);
    				
    				$ingame_image_list = Zend_Json::decode($product_info['download_link']);
    				$ingame_image_list[] =$form->getValues();
					$model->update(array("ingame_image"	=> Zend_Json::encode($ingame_image_list)), $where);
					$this->_redirect('/admin/product/ingame-image-manager/id/' . $this->_arrParam['id']);
    			} catch (Exception $e) {
    				echo $e;
    			}
    		}
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    }
    public function editIngameImageAction(){
    
//    	Load js và css sử dụng trong action

    	$this->view->headScript()->appendFile("/js/upload.js");
    	$this->view->headLink()->appendStylesheet('/css/upload.css','screen');
    	
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_ProductIngameImageForm');
    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
    	
    	/**
    	 * Adapter ket noi toi bang product_model
    	 */
    	
    	/**
    	 * Form add hoặc edit sản phẩm
    	 */
    	
    	$form = new Admin_Forms_ProductIngameImageForm(array('submit'	=> 'Sửa',
    												'cancel_link'	=> '/admin/product/ingame-image-manager/id/' . $this->_arrParam['id'],
    	));
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	$product_info = $model->fetchRow($where);
    	$ingame_image_list = Zend_Json::decode($product_info['ingame_image']);
    	
//    	Nếu action là post thì thực hiện thêm link
        
    	if ($this->_request->isPost()){
    		
//    		Kiểm tra dữ liệu nhập vào đã thỏa hết các điều kiện chưa

    		if ($form->isValid($this->_arrParam)){
    			try {
    				
    				$ingame_image_list[$this->_arrParam["position"]] = $form->getValues();
					$model->update(array("ingame_image"	=> Zend_Json::encode($ingame_image_list)), $where);
					$this->_redirect('/admin/product/ingame_image-manager/id/' . $this->_arrParam['id']);
    			} catch (Exception $e) {
    				echo $e;
    			}
    		}
    	}else{
    		$form->setDefaults($ingame_image_list[$this->_arrParam["position"]]);
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    	$this->render("add-ingame-image");
    }
    public function deleteIngameImageAction(){
    
//    	Load model sử dụng trong action

    	Zend_Loader::loadClass('Admin_Models_ProductModel');
    	
//    	Khai báo biến

    	$model = new Admin_Models_ProductModel();
    	
		$where = $model->getAdapter()->quoteInto('id = ?', $this->_arrParam['id']);
    	$product_info = $model->fetchRow($where);
    	$ingame_image_list = Zend_Json::decode($product_info['ingame_image']);
    	
//    	Nếu action là post thì thực hiện thêm link
        
		try {
			unset($ingame_image_list[$this->_arrParam["position"]]);
			$model->update(array("ingame_image"	=> Zend_Json::encode($ingame_image_list)), $where);
			$this->_redirect('/admin/product/ingame-image-manager/id/' . $this->_arrParam['id']);
		} catch (Exception $e) {
			echo $e;
		}
    }
}